import random
from flask_restful import Resource
from redis import StrictRedis

redis_client = StrictRedis(host='127.0.0.1',port=6378)
user_id = 111
key = 'user:{}'.format(user_id)
token = None


class UserWhiteList(Resource):
    def put(self):
        '''修改密码'''
        print('修改密码完成')
        # 先删除已有的白名单
        if redis_client.exists(key):
            redis_client.delete(key)

        # 将修改了密码的用户记录到白名单中
        redis_client.sadd(key, 1)  # 这里的数字1没有任何意义，可以是任意内容，只为生成键
        # 设置有效期
        redis_client.expire(key, 60 * 60 * 2)
        return '修改密码完成'

    def post(self):
        '''登录'''
        print('登录成功')
        # 生成新的token
        global token
        token = random.randint(100, 999)

        # 判断是否有该用户对应的白名单
        if redis_client.exists(key):
            # 将token加入到白名单
            redis_client.sadd(key, token)
        return '登录成功'

    def get(self):
        '''校验认证'''
        print('验证token成功')
        # 判断该用户是否有白名单（如果有，说明修改过密码）
        if redis_client.exists(key):
            # 判断该token是否在白名单中
            if redis_client.exists(key, token):
                # 如果在
                print('是新的token，允许访问')
            else:
                # 如果不在，重新登录 返回403
                print('是旧的token，需要重新登录')

        else:
            print('没有修改过密码，允许访问')

        return '验证token成功'
